//
// Created by huangjunhao on 2022/10/11.
//

#pragma once

#include "stdio.h"
#include "stdlib.h"
#include "assert.h"
#include "string.h"
#include "malloc.h"
#include "stdbool.h"

#define StackInitSize 100
#define StackIncrement 10
#define SElemType int

typedef struct {
    SElemType* base;
    int top;
    int stacksize;
}SqStack;

//一节课的时间只能缕清栈的相关方法和判定条件！

//将栈顶设置为-1    （s是指针） s->top=-1;
//
//判断栈是否为空   也就设置栈顶的数据是不是-1
//if( s-> top < 0){  return "栈为空";  }
//
//栈的长度        栈顶元素top总是指向最后一个元素  return (q->top+1);
//
//进栈        push()      后进的为栈顶
//出栈        pop()       top弹出
//取栈顶元素   getTop() 或 peek()
void InitStack(SqStack *s);
void Push(SqStack *s, SElemType x);
void Show(SqStack *s);
void Pop(SqStack *s);
bool IsEmpty(SqStack *s);
bool GetTop(SqStack *s, SElemType *v);
int Length(SqStack *s);
void Clear(SqStack *s);
void Destroy(SqStack *s);


//-------------------------




// 链栈
//#define ElemType int   //结点内数据类型
//
////链栈的结点
//typedef struct StackNode
//{
//    ElemType data;          //数据域
//    struct StackNode *next; //指针域
//}StackNode;
//
//typedef StackNode* LinkStack; //链栈指针

//void InitStack(LinkStack *s);
//void Push(LinkStack *s, ElemType x);
//void Show(LinkStack *s);
//void Pop(LinkStack *s);
//bool IsEmpty(LinkStack *s);
//bool GetTop(LinkStack *s, ElemType *v);
//int Length(LinkStack *s);
//void Clear(LinkStack *s);
//void Destroy(LinkStack *s);


#define GRAPH1_GRAPH2_H











